/* Player.java */

package player;

/**
 *  A class that is extended by all Network players (human and machine).
 *
 *  DO NOT CHANGE THIS FILE.
 */
public abstract class Player {
	// This player's name as recognized by the game Network.
	public String myName;

	// Returns a new move by "this" player.  Internally records the move (updates
	// the internal game board) as a move by "this" player.
	public abstract Move chooseMove();

	// If the Move m is legal, records the move as a move by the opponent
	// (updates the internal game board) and returns true.  If the move is
	// illegal, returns false without modifying the internal state of "this"
	// player.  This method allows your opponents to inform you of their moves.
	public abstract boolean opponentMove(Move m);

	// If the Move m is legal, records the move as a move by "this" player
	// (updates the internal game board) and returns true.  If the move is
	// illegal, returns false without modifying the internal state of "this"
	// player.  This method is used to help set up "Network problems" for your
	// player to solve.
	public abstract boolean forceMove(Move m);

}
